package com.leyou.auth.utils;


import com.auth.dto.UserDetails;

public class UserContext {
    private static final ThreadLocal<UserDetails> TL = new ThreadLocal<>();
    private static final ThreadLocal<String> tl2 = new ThreadLocal<>();
    //用户调用远程服务时候不会加上token，所以我们要想办法在用户远程调用时候被识别加上token信息
    //我们需要在Feign发出一切请求时，都携带cookie，并在cookie中携带LY_TOKEN。
    //修改登录拦截器UserInterceptor，在获取到用户以后，把jwt存储到UserContext:
    public static void setJwt(String jwt) {
        tl2.set(jwt);
    }

    public static String getJwt() {
        return tl2.get();
    }

    public static void removeJwt() {
        tl2.remove();
    }
    /**
     * 存储一个用户到当前线程
     * @param user 用户信息
     */
    public static void setUser(UserDetails user) {
        TL.set(user);
    }

    /**
     * 从当前线程获取一个用户
     * @return 用户信息
     */
    public static UserDetails getUser() {
        return TL.get();
    }

    /**
     * 从当前线程移除用户
     */
    public static void removeUser() {
        TL.remove();
    }
}